package view;

import java.awt.BorderLayout;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import model.Mitarbeiter;
import controller.DatenController;

//import controller.ControllerDefault;
//import controller.IController;

/**
 * Testoberfl�che zum Eintragen von Mitarbeitern
 * @author Tim Tenbusch
 * @version 1.0 vom 05.11.2013
 */
public class TestMitarbeiter extends JFrame {

	private static final long serialVersionUID = -5768759711453394107L;
	private DatenController control;
	private JPanel contentPane;
	private JLabel lblBeschr = new JLabel("TestView Mitarbeiter");
	private JTextField tfdMitarbeiterNr;
	private JTextField tfdNachname;
	private JTextField tfdVorname;
	private JComboBox cbxAnrede;
	private JComboBox cbxTitel;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TestMitarbeiter frame = new TestMitarbeiter(new DatenController());
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public TestMitarbeiter(DatenController control) {
		this.control = control;
		setTitle("Ger\u00E4teverwaltung");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 600, 500);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));

		JPanel pnlTitel = new JPanel();
		contentPane.add(pnlTitel, BorderLayout.NORTH);
		pnlTitel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

		JLabel lblLogo = new JLabel("");
		lblLogo.setIcon(new ImageIcon(TestMitarbeiter.class
				.getResource("/Bilder/Logo_lang_200_43.jpg")));
		pnlTitel.add(lblLogo);
		pnlTitel.add(lblBeschr);

		JPanel pnlFormular = new JPanel();
		contentPane.add(pnlFormular, BorderLayout.CENTER);
		pnlFormular.setLayout(new GridLayout(0, 1, 0, 0));

		JLabel lblMitarbeiternr = new JLabel("MitarbeiterNr");
		pnlFormular.add(lblMitarbeiternr);

		tfdMitarbeiterNr = new JTextField();
		pnlFormular.add(tfdMitarbeiterNr);
		tfdMitarbeiterNr.setColumns(10);

		JLabel lblTitel = new JLabel("Titel");
		pnlFormular.add(lblTitel);

		cbxAnrede = new JComboBox();
		cbxAnrede.setModel(new DefaultComboBoxModel(new String[] {"", "Frau", "Herr"} ));
		pnlFormular.add(cbxAnrede);
		
		
		cbxTitel = new JComboBox();
		cbxTitel.setModel(new DefaultComboBoxModel(new String[] {"", "Dr.", "Prof.", "Prof. Dr.", "Dipl.-Med.", "?" }));
		pnlFormular.add(cbxTitel);

		JLabel lblVorname = new JLabel("Vorname");
		pnlFormular.add(lblVorname);

		tfdVorname = new JTextField();
		pnlFormular.add(tfdVorname);
		tfdVorname.setColumns(10);

		JLabel lblNachname = new JLabel("Nachname");
		pnlFormular.add(lblNachname);

		tfdNachname = new JTextField();
		pnlFormular.add(tfdNachname);
		tfdNachname.setColumns(10);

		JPanel pnlButtons = new JPanel();
		contentPane.add(pnlButtons, BorderLayout.SOUTH);
		pnlButtons.setLayout(new GridLayout(0, 3, 0, 0));

		JButton btnEintragen = new JButton("eintragen");
		btnEintragen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				btnEintragen_ActionPerformed(e);
			}
		});
		pnlButtons.add(btnEintragen);

		JButton btnNrSuchen = new JButton("Nr suchen");
		btnNrSuchen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				btnNrSuchen_ActionPerformed(e);
			}
		});
		pnlButtons.add(btnNrSuchen);

		JButton btnEintragaendern = new JButton("Eintrag \u00E4ndern");
		btnEintragaendern.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				btnEintragaendern_ActionPerformed(e);
			}
		});
		pnlButtons.add(btnEintragaendern);
	}

	public void btnEintragen_ActionPerformed(ActionEvent arg0){
		
		boolean erfolg = this.control.neuerMitarbeiter(new Mitarbeiter(tfdMitarbeiterNr.getText(),
				tfdVorname.getText(),
				tfdNachname.getText(),
				(String) cbxAnrede.getSelectedItem(),
				(String) cbxTitel.getSelectedItem(),
				""));
		if(erfolg) lblBeschr.setText("Mitarbeiter erfolgreich hinzugef�gt.");
		else lblBeschr.setText(this.control.getFehlermeldung());
	}
	
	public void btnNrSuchen_ActionPerformed(ActionEvent arg0){
		Mitarbeiter m = this.control.getMitarbeiter(tfdMitarbeiterNr.getText());
		cbxAnrede.setSelectedItem(m.getAnrede());
		cbxTitel.setSelectedItem(m.getTitel());
        tfdVorname.setText(m.getVorname());
        tfdNachname.setText(m.getNachname());
	}
	
	public void btnEintragaendern_ActionPerformed(ActionEvent arg0){		
		boolean erfolg = this.control.editMitarbeiter(new Mitarbeiter(tfdMitarbeiterNr.getText(),
				tfdVorname.getText(),
				tfdNachname.getText(),
				(String) cbxAnrede.getSelectedItem(),
				(String) cbxTitel.getSelectedItem(),
				""));
		if(erfolg) lblBeschr.setText("Mitarbeiter erfolgreich hinzugefuegt.");
		else lblBeschr.setText(this.control.getFehlermeldung());
	}
}
